package main

import "fmt"

/*
go语言中的运算符
*/
//算术运算符
//关系运算符
//逻辑运算符
//位运算符
//赋值运算符
func main() {
	//1.算术运算符
	a := 10
	b := 20
	fmt.Println(a + b)
	fmt.Println(a - b)
	fmt.Println(a * b)
	fmt.Println(5 / 2) // 2
	fmt.Println(5 % 2) // 1

	//注意： ++（自增）和--（自减）在Go语言中是单独的语句，并不是运算符
	a++
	fmt.Println(a)
	a--
	fmt.Println(a)
	//在go语言中只能这么去写，不用前置++，前置--和后置++，后置++的区别了

	//关系运算符，逻辑运算符与Java一样

	//位运算符
	/*
		&		参与运算的两数各对应的二进位相与。（两位均为1才为1）
		|		参与运算的两数各对应的二进位相或。（两位有一个为1就为1）
		^		参与运算的两数各对应的二进位相异或，当两对应的二进位相异时，结果为1。（两位不一样则为1）
		«		左移n位就是乘以2的n次方。“a«b"是把a的各二进位全部左移b位，高位丢弃，低位补0。
		»		右移n位就是除以2的n次方。“a»b"是把a的各二进位全部右移b位。
	*/
	c := 1             //001
	d := 5             //101
	fmt.Println(c & d) //001  --> 1
	fmt.Println(c | d) //101  --> 5
	fmt.Println(c ^ d) //100  --> 4

	fmt.Println("========")

	fmt.Println(1 << 2) //100  --> 4
	fmt.Println(4 >> 2) //001  --> 1

	fmt.Println(1 << 10) //1024

	s := "hello沙河小王子"
	fmt.Println(s)
}
